package client // Package client import "xemo.top/docker/docker/client"
import (
	"context"
	"net/url"
	"time"
	timetypes "xemo.top/docker/docker/api/types/time"
)

// ContainerStop 停止容器。如果容器无法在timeout参数指定的时间范围内正常停止，则会强制终止 (杀死)。
// ContainerStop stops a container.In case the container fails to stop gracefully within a time frame specified by the timeout argument, it is forcefully terminated (killed).
//
// 如果timeout为nil，则使用容器的StopTimeout值，如果设置，否则使用引擎默认值。可以指定负超时值，这意味着没有超时，即没有强制终止
// If the timeout is nil,the container's StopTimeout value is used,if set,otherwise the engine default.A negative timeout value can be specified,meaning no timeout,i.e. no forceful termination is performed
func (cli *Client) ContainerStop(ctx context.Context, containerID string, timeout *time.Duration) error {
	query := url.Values{}
	if timeout != nil {
		query.Set("t", timetypes.DurationToSecondsString(*timeout))
	}
	resp, err := cli.post(ctx, "/containers/"+containerID+"/stop", query, nil, nil)
	defer ensureReaderClosed(resp)
	return err
}
